// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符， 
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子： 
// new Date().Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// new Date().Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (fmt) {  
    var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "h+": this.getHours(), //小时 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) 
    	fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
    	fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};

//转化JSON日期格式
function toDate(objDate, format) {
	if(objDate == '' || objDate == null) {
		return "";
	}else {
		var date = new Date(objDate);//.time
		return date.Format(format);
	}
}

//计算时间是前天、昨天、今天还是其他时间
function countDay(objDate) {
	var dateStr = "";
	var objTime = "";
	if(typeof(objDate) == "object") {
		objTime = new Date(objDate.time);
	}else {
		objTime = new Date(objDate);
	}
	var objYear = objTime.getFullYear();
	var objMonth = objTime.getMonth()+1;
	var objDay = objTime.getDate();
	var nowTime = new Date();
	var nowYear = nowTime.getFullYear();
	var nowMonth = nowTime.getMonth()+1;
	var nowDay = nowTime.getDate();
	if(objYear == nowYear && objMonth == nowMonth) {
		if(nowDay - objDay == 0) {
			dateStr = "今天 "+objTime.Format("hh:mm");
		}else if(nowDay - objDay == 1) {
			dateStr = "昨天  "+objTime.Format("hh:mm");
		}else if(nowDay - objDay == 2) {
			dateStr = "前天  "+objTime.Format("hh:mm");
		}else {
			dateStr = objTime.Format("yyyy-MM-dd");
		}
	}else {
		dateStr = objTime.Format("yyyy-MM-dd");
	}
	return dateStr;
}

//获取系统当前时间
function ShowTime()
{  
	var d=new Date(),str='';  
	str +=FullNumber(d.getHours())+':'; 
	str +=FullNumber(d.getMinutes()); 
	return str;
}

//时间位数判断，不够10的加0
function FullNumber(str)
{
	if(str<10)
	{str = "0"+str;} 
  return str;
}

//当前日期
function CurrentDate()
{ 
	var d=new Date(),str=''; 
	str +=FullNumber(d.getFullYear())+'-'; //获取当前年份 
	str +=FullNumber(d.getMonth()+1)+'-'; //获取当前月份（0——11） 
	str +=FullNumber(d.getDate())+''; 
	return str;
 }

 //计算天数差的函数，通用  
function  DateDiff(sDate1,  sDate2){    //sDate1和sDate2是2006-12-18格式  
   var  aDate,  oDate1,  oDate2,  iDays  
   aDate  =  sDate1.split("-")  
   oDate1  =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0])    //转换为12-18-2006格式  
   aDate  =  sDate2.split("-")  
   oDate2  =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0])  
   iDays  =  parseInt(Math.abs(oDate1  -  oDate2)  /  1000  /  60  /  60  /24)    //把相差的毫秒数转换为天数  
   return  iDays;
   
}    

//计算 n天后 的日期   例如    当前日期为2014年10月29日    20天后   日期为2014年11月28日
function AddDays(nowDate,daysOrYears,type){
	if(type == 'day'){
		var newtimems=nowDate.getTime()+(daysOrYears*24*60*60*1000);
		nowDate.setTime(newtimems);
	}else if(type == 'year'){
		var newtimems=nowDate.getFullYear()+Number(daysOrYears);
		nowDate.setFullYear(newtimems);
	}
	return nowDate;
	
}

//计算n年前的日期
function AddYears(nowDate,Year){
	var m = nowDate.getMonth();
	nowDate.setFullYear(nowDate.getFullYear() + Year);

	if (m < nowDate.getMonth()){
		nowDate.setDate(0);
	}
	return nowDate;
}

//格式化CST日期的字串
function formatCSTDate(strDate,format){
  return formatDate(new Date(strDate),format);
}
 
//格式化日期,
function formatDate(date,format){
  var paddNum = function(num){
    num += "";
    return num.replace(/^(\d)$/,"0$1");
  }
  //指定格式字符
  var cfg = {
     yyyy : date.getFullYear() //年 : 4位
    ,yy : date.getFullYear().toString().substring(2)//年 : 2位
    ,M  : date.getMonth() + 1  //月 : 如果1位的时候不补0
    ,MM : paddNum(date.getMonth() + 1) //月 : 如果1位的时候补0
    ,d  : date.getDate()   //日 : 如果1位的时候不补0
    ,dd : paddNum(date.getDate())//日 : 如果1位的时候补0
    ,hh : date.getHours()  //时
    ,mm : date.getMinutes() //分
    ,ss : date.getSeconds() //秒
  }
  format || (format = "yyyy-MM-dd hh:mm:ss");
  return format.replace(/([a-z])(\1)*/ig,function(m){return cfg[m];});
} 


